//
//  WXLHomeTableViewController.swift
//  WXLWeoBo
//
//  Created by 王晓雷 on 16/6/25.
//  Copyright © 2016年 王晓雷. All rights reserved.
//

import UIKit
import AFNetworking

// cell 可重用标识符
private let statusCellId = "statusCellId"

class WXLHomeTableViewController: WXLVisitorTableViewController {

    // 定义保存微博数据的数组
    var statusArray:[WXLStatus]?

    override func viewDidLoad() {
        super.viewDidLoad()
//
        if  !isLogin {
            visitorView?.setupVisitorViewInfo(nil, title: nil)
            return
        }

        // 设置tableViewInfo
        setupTableViewInfo()
        
        // 请求微博首页数据
        loadStatusData { (result) -> () in
            // 赋值
            self.statusArray = result
            // 刷新UI
            self.tableView.reloadData()
        }
    }

        // 设置tableView 相关属性
        func setupTableViewInfo(){
            // 获取class  格式: 类名.self
            tableView.registerClass(WXLStautsCell.self, forCellReuseIdentifier: statusCellId)
            // 指定tableViewCell 高度
//            tableView.rowHeight = 300  UITableViewAutomaticDimension 自动计算行高
            tableView.rowHeight = UITableViewAutomaticDimension
            //预估行高
            tableView.estimatedRowHeight = 200
    }

    }

// MARK: - 请求首页数据
extension WXLHomeTableViewController {
    
    func loadStatusData(callBack:(result: [WXLStatus])->()){
        
        WXLNetworktools.sharedTools.homeLoadStatusData({ (response) -> () in
            
            // 判断我们请求回来数据是否有值 而且是否是一个数组
            guard let res = response?["statuses"] as?[[String: AnyObject]] else {
                print("返回数据为nil 或者 类型不匹配")
                return
            }
            // 定义一个临时数组
            var tempArray:[WXLStatus] = [WXLStatus]()
            // 遍历数组 完成字典转模型
            for dic in res {
                // 初始化模型
                let status = WXLStatus(dict: dic)
                // 保存模型
                tempArray.append(status)
            }
//              print(tempArray[0].user?.name)
            // 执行闭包 吧数据反出去
            callBack(result: tempArray)
            
            }) { (error) -> () in
                print("失败:\(error)")
        }
    }
}

extension WXLHomeTableViewController {
    func first(){
        let manager = AFHTTPSessionManager()
        
        manager.GET("", parameters: nil, progress: nil, success: { (_, response) -> Void in
            
            guard let res = response?["statuses"] as? [[String: AnyObject]]else{
                print("返回数据为nil 或者 类型不匹配")
                return
            }
            // 创建一个临时数组保存我们每次遍历数组 字典转名的数据
            var tempArray:[WXLStatus] = [WXLStatus]()
            // 遍历数组 完成字典转模型
            for dic in res {
                // 实例化模型
                let stauts = WXLStatus(dict: dic)
                
                // 保存模型到数组中
                tempArray.append(stauts)
            }
           
            // 数据保存成功 执行闭包
//             callBack(result: tempArray)
            
            }) { (_, error) -> Void in
                print("失败:\(error)")
                
        }
    }
    
    func second() {
        // 请求url
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        // 请求参数
        // accessToken!  因为如果没有登录的话 根本就不会进行到请求数据 所以可以强行解包
        let params = ["access_token": WXLUserAccountTools.sharedTools.accessToken!]
        // 发送请求
        WXLNetworktools.sharedTools.request(MethodType.GET, urlString: urlString, parameters: params, success: { (response) -> () in
            // 判断我们请求回来数据是否有值 而且是否是一个数组
            guard let res = response?["statuses"] as?[[String: AnyObject]] else {
                print("返回数据为nil 或者 类型不匹配")
                return
            }
            // 定义一个临时数组
            var tempArray:[WXLStatus] = [WXLStatus]()
            // 遍历数组 完成字典转模型
            for dic in res {
                // 初始化模型
                let status = WXLStatus(dict: dic)
                // 保存模型
                tempArray.append(status)
            }
            // 执行闭包 吧数据反出去
            // callBack(result: tempArray)
            
            }) { (error) -> () in
                print("失败:\(error)")
        }
    }
}

extension WXLHomeTableViewController {
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusArray?.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // 创建cell
        let cell = tableView.dequeueReusableCellWithIdentifier(statusCellId, forIndexPath: indexPath) as! WXLStautsCell
       
        //给cell赋值
        cell.status = statusArray![indexPath.row]
        return cell
    }
}
